﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using Iudicium.Procesos;
using Iudicium.Procesos.CRN;

public partial class Servicios_EtapaProceso_FormularioEtapaProceso : System.Web.UI.Page
{
    private static readonly ILog log = LogManager.GetLogger("LogFile");
    private int EtapaProcesoId
    {
        set { EtapaProcesoIdHiddenField.Value = value.ToString(); }
        get
        {
            int EtapaProcesoId = 0;
            try
            {
                EtapaProcesoId = Convert.ToInt32(EtapaProcesoIdHiddenField.Value);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo convertir EtapaProcesoIdHiddenField.Value a un valor entero", ex);
            }
            return EtapaProcesoId;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ObtenerParametros();
        }
    }
    private void ObtenerParametros()
    {
        if (Session["EtapaProcesoId"] != null && !string.IsNullOrEmpty(Session["EtapaProcesoId"].ToString()))
        {
            EtapaProcesoIdHiddenField.Value = Session["EtapaProcesoId"].ToString();
            CargarDatos();
        }
        Session["EtapaProcesoId"] = null;
    }
    private void CargarDatos()
    {
        int TipoProcesoId = 0;
        try
        {
            TipoProcesoId = Convert.ToInt32(Session["TipoProcesoId"].ToString());
        }
        catch (Exception ex)
        {
            log.Error("No se pudo obtener el TipoProcesoId de TipoProcesoDropDownList.SelectedValue", ex);
        }
        EtapaProceso objEtapaProceso = null;
        try
        {
            objEtapaProceso = EtapaProcesoCRN.GetEtapaProcesoById(EtapaProcesoId, TipoProcesoId);
        }
        catch (Exception ex)
        {
            log.Error("No se pudo obtener la EtapaProceso con id: " + EtapaProcesoId, ex);
        }
        if (objEtapaProceso == null)
            return;
        EtapaProcesoTextBox.Text = objEtapaProceso.Descripcion;
        TipoProcesoDropDownList.SelectedValue = objEtapaProceso.TipoProcesoId.ToString();
    }

    protected void GuardarLinkButton_Click(object sender, EventArgs e)
    {
        int TipoProcesoId = 0;
        try
        {
            TipoProcesoId = Convert.ToInt32(TipoProcesoDropDownList.SelectedValue);
        }
        catch (Exception ex)
        {
            log.Error("No se pudo obtener la TipoProcesoId de TipoProcesoDropDownList.SelectedValue", ex);
        }
        EtapaProceso objEtapaProceso = new EtapaProceso(EtapaProcesoId, EtapaProcesoTextBox.Text, TipoProcesoId);
        if (EtapaProcesoId == 0)
        {
            try
            {
                EtapaProcesoId = EtapaProcesoCRN.InsertEtapaProceso(objEtapaProceso);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo insertar la EtapaProceso", ex);
                Iudicium.Utilitarios.Notificacion.MostrarNotificacion(
                    "El registro de la EtapaProceso no se pudo completar correctamente.",
                    Iudicium.Utilitarios.Notificacion.TipoNotificacion.Error);
                return;
            }
            Iudicium.Utilitarios.Notificacion.MostrarNotificacion(
                    "El registro de la EtapaProceso se realizó correctamente.",
                    Iudicium.Utilitarios.Notificacion.TipoNotificacion.Alert);
        }
        else
        {
            try
            {
                EtapaProcesoCRN.UpdateEtapaProceso(objEtapaProceso);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo actualizar los datos de la EtapaProceso", ex);
                Iudicium.Utilitarios.Notificacion.MostrarNotificacion(
                    "Los datos de la EtapaProceso no se pudieron editar correctamente.",
                    Iudicium.Utilitarios.Notificacion.TipoNotificacion.Error);
                return;
            }
            Iudicium.Utilitarios.Notificacion.MostrarNotificacion(
                    "Los datos de la EtapaProceso se editaron correctamente.",
                    Iudicium.Utilitarios.Notificacion.TipoNotificacion.Alert);
        }
        Session["TipoProcesoId"] = TipoProcesoId;
        Response.Redirect("~/Servicios/EtapaProceso/ListaEtapaProcesos.aspx");

    }
}
